package utils

import (
	"fmt"
	"github.com/kataras/iris/v12"
)
// common error define
func Error(ctx iris.Context, status int, code Code) {
	ctx.StatusCode(status)
	ctx.JSON(json(code, false, nil, nil))
}

// 200 define
func Ok_(ctx iris.Context, code Code) {
	Ok(ctx, code, nil)
}

func Ok(ctx iris.Context, code Code, data interface{}) {
	ctx.StatusCode(iris.StatusOK)
	ctx.JSON(json(code, true, data, nil))
}

// 401 error define
func Unauthorized(ctx iris.Context, code Code) {
	ctx.StatusCode(iris.StatusOK)
	ctx.JSON(json(code, false, nil, nil))
}

func InternalServerError(ctx iris.Context, code Code, err error) {
	ctx.StatusCode(iris.StatusOK)
	ctx.JSON(json(code, false, nil, err))
}

func PaginationTableData(ctx iris.Context, total int64, data interface{}) {
	ctx.StatusCode(iris.StatusOK)
	ctx.JSON(json(CODE_OK, true, iris.Map{
		"total": total,
		"data":  data,
	}, nil))
}

// json包装
func json(code Code, success bool, data interface{}, err error) iris.Map {
	msg := code.String()
	if err != nil {
		msg = err.Error()
	}
	return iris.Map{
		"success" : success,
		"code": fmt.Sprintf("%d", code),
		"msg":  msg,
		"data": data,
	}
}
